home *** CD-ROM | disk | FTP | other *** search
- Path: uunet!wyse!mikew
- From: mikew@wyse.wyse.com (Mike Wexler)
- Newsgroups: comp.sources.x
- Subject: v02i071: a browser, Part03/03
- Message-ID: <1955@wyse.wyse.com>
- Date: 3 Jan 89 20:53:58 GMT
- Organization: Wyse Technology, San Jose
- Lines: 1305
- Approved: mikew@wyse.com
-
- Submitted-by: Schlichter.Wbst@Xerox.COM (Hans Schlichter)
- Posting-number: Volume 2, Issue 71
- Archive-name: xbrowser/part03
-
- #! /bin/sh
- # This is a shell archive. Remove anything before this line, then unpack
- # it by saving it into a file and typing "sh file". To overwrite existing
- # files, type "sh file -c". You can also feed this as standard input via
- # unshar, or by typing "sh <file", e.g.. If this archive is complete, you
- # will see the following message at the end:
- # "End of archive 3 (of 3)."
- # Contents: AUTHOR Imakefile Makefile ap.c list.c option.h optionP.h
- # toggle.h toggleP.h xbrowser.icon xfilebrowser.h
- # Wrapped by mikew@wyse on Tue Jan 3 12:03:49 1989
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f 'AUTHOR' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'AUTHOR'\"
- else
- echo shar: Extracting \"'AUTHOR'\" \(491 characters\)
- sed "s/^X//" >'AUTHOR' <<'END_OF_FILE'
- XReturn-Path: Schlichter.Wbst@Xerox.COM
- XReceived: by wyse.wyse.com (5.58/Wyse master/5-13-88)
- X id AA13290; Tue, 3 Jan 89 11:13:22 PST
- XFrom: Schlichter.Wbst@Xerox.COM
- XReceived: from Xerox.COM by uunet.UU.NET (5.59/1.14)
- X id AA11840; Tue, 3 Jan 89 13:01:45 EST
- XReceived: from Catawba.ms by ArpaGateway.ms ; 03 JAN 89 09:58:01 PST
- XDate: 3 Jan 89 12:57:28 EST (Tuesday)
- XSubject: xbrowser.shar.part1.Z
- XTo: x-sources@wyse.com
- XCc: Schlichter.Wbst@Xerox.COM
- XMessage-Id: <890103-095801-1304@Xerox>
- X
- END_OF_FILE
- if test 491 -ne `wc -c <'AUTHOR'`; then
- echo shar: \"'AUTHOR'\" unpacked with wrong size!
- fi
- # end of 'AUTHOR'
- fi
- if test -f 'Imakefile' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'Imakefile'\"
- else
- echo shar: Extracting \"'Imakefile'\" \(434 characters\)
- sed "s/^X//" >'Imakefile' <<'END_OF_FILE'
- X#ifdef BandAidCompiler
- X#include BandAidCompiler
- X#endif
- X
- XLOCAL_LIBRARIES = $(XAWLIB) $(XMULIB) $(XTOOLLIB) $(XLIB)
- X
- X SRCS = ap.c commands.c list.c modcommand.c option.c \
- X popup.c scandir.c search.c toggle.c util.c \
- X xfilebrowser.c
- X OBJS = ap.o commands.o list.o modcommand.o option.o \
- X popup.o scandir.o search.o toggle.o util.o \
- X xfilebrowser.o
- X
- XComplexProgramTarget(xbrowser)
- XInstallAppDefaults(Xbrowser)
- END_OF_FILE
- if test 434 -ne `wc -c <'Imakefile'`; then
- echo shar: \"'Imakefile'\" unpacked with wrong size!
- fi
- # end of 'Imakefile'
- fi
- if test -f 'Makefile' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'Makefile'\"
- else
- echo shar: Extracting \"'Makefile'\" \(6752 characters\)
- sed "s/^X//" >'Makefile' <<'END_OF_FILE'
- X# Makefile generated by imake - do not edit!
- X# $XConsortium: imake.c,v 1.37 88/10/08 20:08:30 jim Exp $
- X#
- X# The cpp used on this machine replaces all newlines and multiple tabs and
- X# spaces in a macro expansion with a single space. Imake tries to compensate
- X# for this, but is not always successful.
- X#
- X
- X###########################################################################
- X# X Window System Makefile generated from template file Imake.tmpl
- X# $XConsortium: Imake.tmpl,v 1.91 88/10/23 22:37:10 jim Exp $
- X#
- X# Do not change the body of the imake template file. Server-specific
- X# parameters may be set in the appropriate .macros file; site-specific
- X# parameters (but shared by all servers) may be set in site.def. If you
- X# make any changes, you'll need to rebuild the makefiles using
- X# "make World" (at best) or "make Makefile; make Makefiles" (at least) in
- X# the top level directory.
- X#
- X# If your C preprocessor doesn't define any unique symbols, you'll need
- X# to set BOOTSTRAPCFLAGS when rebuilding imake (usually when doing
- X# "make Makefile", "make Makefiles", or "make World").
- X#
- X# If you absolutely can't get imake to work, you'll need to set the
- X# variables at the top of each Makefile as well as the dependencies at the
- X# bottom (makedepend will do this automatically).
- X#
- X
- X###########################################################################
- X# platform-specific configuration parameters - edit Sun.macros to change
- X
- X# platform: $XConsortium: Sun.macros,v 1.52 88/10/23 11:00:55 jim Exp $
- X# operating system: SunOS 3.4
- X
- XBOOTSTRAPCFLAGS =
- X AS = as
- X CC = cc
- X CPP = /lib/cpp
- X LD = ld
- X LINT = lint
- X INSTALL = install
- X TAGS = ctags
- X RM = rm -f
- X MV = mv
- X LN = ln -s
- X RANLIB = ranlib
- XRANLIBINSTFLAGS = -t
- X AR = ar clq
- X LS = ls
- X LINTOPTS = -axz
- X LINTLIBFLAG = -C
- X MAKE = make
- XSTD_CPP_DEFINES =
- X STD_DEFINES =
- X
- X###########################################################################
- X# site-specific configuration parameters - edit site.def to change
- X
- X# site: $XConsortium: site.def,v 1.16 88/10/12 10:30:24 jim Exp $
- X
- X###########################################################################
- X# definitions common to all Makefiles - do not edit
- X
- X SHELL = /bin/sh
- X
- X DESTDIR = /global
- X USRLIBDIR = $(DESTDIR)/lib
- X BINDIR = $(DESTDIR)/bin/X11
- X INCDIR = $(DESTDIR)/include
- X ADMDIR = $(DESTDIR)/usr/adm
- X LIBDIR = $(USRLIBDIR)/X11
- X LINTLIBDIR = $(USRLIBDIR)/lint
- X FONTDIR = $(LIBDIR)/fonts
- X XINITDIR = $(LIBDIR)/xinit
- X XDMDIR = $(LIBDIR)/xdm
- X UWMDIR = $(LIBDIR)/uwm
- X AWMDIR = $(LIBDIR)/awm
- X TWMDIR = $(LIBDIR)/twm
- X DTDIR = $(LIBDIR)/dt
- X MANPATH = /usr/man
- X MANSOURCEPATH = $(MANPATH)/man
- X MANDIR = $(MANSOURCEPATH)n
- X LIBMANDIR = $(MANSOURCEPATH)n3
- X XAPPLOADDIR = $(LIBDIR)/app-defaults
- X
- X INSTBINFLAGS = -m 0755
- X INSTUIDFLAGS = -m 4755
- X INSTLIBFLAGS = -m 0664
- X INSTINCFLAGS = -m 0444
- X INSTMANFLAGS = -m 0444
- X INSTAPPFLAGS = -m 0444
- X INSTKMEMFLAGS = -m 4755
- X FCFLAGS = -t
- X CDEBUGFLAGS = -O
- X
- X PATHSEP = /
- X DEPEND = $(BINDIR)/makedepend
- X IMAKE = $(BINDIR)/imake
- X RGB = $(LIBDIR)/rgb
- X FC = $(BINDIR)/bdftosnf
- X MKFONTDIR = $(BINDIR)/mkfontdir
- X MKDIRHIER = $(BINDIR)/mkdirhier.sh
- X
- X CFLAGS = $(CDEBUGFLAGS) $(INCLUDES) $(STD_DEFINES) $(DEFINES)
- X LINTFLAGS = $(LINTOPTS) $(INCLUDES) $(STD_DEFINES) $(DEFINES) -DLINT
- X LDFLAGS = $(CDEBUGFLAGS) -L$(USRLIBDIR) $(SYS_LIBRARIES) $(SYSAUX_LIBRARIES)
- X
- X IRULESRC = $(LIBDIR)/imake.includes
- X
- X EXTENSIONLIB = $(USRLIBDIR)/libext.a
- X XLIB = $(USRLIBDIR)/libX11.a
- X XMULIB = $(USRLIBDIR)/libXmu.a
- X OLDXLIB = $(USRLIBDIR)/liboldX.a
- X XTOOLLIB = $(USRLIBDIR)/libXt.a
- X XAWLIB = $(USRLIBDIR)/libXaw.a
- X LINTXLIB = $(USRLIBDIR)/llib-lX11.ln
- X LINTXMU = $(USRLIBDIR)/llib-lXmu.ln
- X LINTXTOOL = $(USRLIBDIR)/llib-lXt.ln
- X LINTXAW = $(USRLIBDIR)/llib-lXaw.ln
- X INCLUDES = -I$(INCDIR)
- X MACROFILE = Sun.macros
- X ICONFIGFILES = $(IRULESRC)/Imake.tmpl \
- X $(IRULESRC)/$(MACROFILE) $(IRULESRC)/site.def
- X IMAKE_DEFINES =
- X IMAKE_CMD = $(NEWTOP)$(IMAKE) -TImake.tmpl -I$(NEWTOP)$(IRULESRC) \
- X -s Makefile $(IMAKE_DEFINES)
- X RM_CMD = $(RM) *.CKP *.ln *.BAK *.bak *.o core errs ,* *~ *.a \
- X .emacs_* tags TAGS make.log MakeOut
- X
- X###########################################################################
- X# rules: $XConsortium: Imake.rules,v 1.71 88/10/23 22:46:34 jim Exp $
- X
- X###########################################################################
- X# start of Imakefile
- X
- XLOCAL_LIBRARIES = $(XAWLIB) $(XMULIB) $(XTOOLLIB) $(XLIB)
- X
- X SRCS = ap.c commands.c list.c modcommand.c option.c \
- X popup.c scandir.c search.c toggle.c util.c \
- X xfilebrowser.c
- X OBJS = ap.o commands.o list.o modcommand.o option.o \
- X popup.o scandir.o search.o toggle.o util.o \
- X xfilebrowser.o
- X
- X PROGRAM = xbrowser
- X
- Xall:: xbrowser
- X
- Xxbrowser: $(OBJS) $(LOCAL_LIBRARIES)
- X $(RM) $@
- X $(CC) -o $@ $(OBJS) $(LOCAL_LIBRARIES) $(LDFLAGS) $(SYSLAST_LIBRARIES)
- X
- Xrelink::
- X $(RM) $(PROGRAM)
- X $(MAKE) $(MFLAGS) $(PROGRAM)
- X
- Xinstall:: xbrowser
- X $(INSTALL) -c $(INSTALLFLAGS) xbrowser $(BINDIR)
- X
- Xinstall.man:: xbrowser.man
- X $(INSTALL) -c $(INSTMANFLAGS) xbrowser.man $(MANDIR)/xbrowser.n
- X
- Xdepend:: $(DEPEND)
- X
- Xdepend::
- X $(DEPEND) -s "# DO NOT DELETE" -- $(CFLAGS) -- $(SRCS)
- X
- X$(DEPEND):
- X @echo "making $@"; \
- X cd $(DEPENDSRC); $(MAKE)
- X
- Xclean::
- X $(RM) $(PROGRAM)
- X
- Xinstall:: Xbrowser.ad
- X $(INSTALL) -c $(INSTAPPFLAGS) Xbrowser.ad $(XAPPLOADDIR)/Xbrowser
- X
- X###########################################################################
- X# Imake.tmpl common rules for all Makefiles - do not edit
- X
- Xemptyrule::
- X
- Xclean::
- X $(RM_CMD) \#*
- X
- XMakefile:: $(IMAKE)
- X
- XMakefile:: Imakefile \
- X $(IRULESRC)/Imake.tmpl \
- X $(IRULESRC)/Imake.rules \
- X $(IRULESRC)/site.def \
- X $(IRULESRC)/$(MACROFILE)
- X -@if [ -f Makefile ]; then \
- X echo "$(RM) Makefile.bak; $(MV) Makefile Makefile.bak"; \
- X $(RM) Makefile.bak; $(MV) Makefile Makefile.bak; \
- X else exit 0; fi
- X $(IMAKE_CMD) -DTOPDIR=$(TOP)
- X
- X$(IMAKE):
- X @echo "making $@"; \
- X cd $(IMAKESRC); $(MAKE) BOOTSTRAPCFLAGS=$(BOOTSTRAPCFLAGS)
- X
- Xtags::
- X $(TAGS) -w *.[ch]
- X $(TAGS) -xw *.[ch] > TAGS
- X
- X###########################################################################
- X# empty rules for directories that do not have SUBDIRS - do not edit
- X
- Xinstall::
- X @echo "install done"
- X
- Xinstall.man::
- X @echo "install.man done"
- X
- XMakefiles::
- X
- X###########################################################################
- X# dependencies generated by makedepend
- X
- END_OF_FILE
- if test 6752 -ne `wc -c <'Makefile'`; then
- echo shar: \"'Makefile'\" unpacked with wrong size!
- fi
- # end of 'Makefile'
- fi
- if test -f 'ap.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'ap.c'\"
- else
- echo shar: Extracting \"'ap.c'\" \(3558 characters\)
- sed "s/^X//" >'ap.c' <<'END_OF_FILE'
- X/* Systems Sciences Laboratory, Webster Research Center */
- X
- Xstatic char *PROGRAM_information[] =
- X{
- X "Copyright (c) 1988 Xerox Corporation. All rights reserved.",
- X "$Header$",
- X "$Locker$"
- X}
- X;
- X
- X/*
- X * Copyright protection claimed includes all forms and matters of copyrightable
- X * material and information now allowed by statutory or judicial lay or
- X * herinafter granted, including without limitation, material generated from
- X * the software programs which are displayed on the screen such as icons,
- X * screen display looks, etc.
- X */
- X
- X
- X#include "xfilebrowser.h"
- X
- X#define chunk 2048
- X
- Xtypedef struct {
- X char *buf;
- X int size;
- X XtTextPosition pos;
- X XtTextSource strSrc;
- X} ApAsSourceData;
- X
- X/* Private Routines */
- X
- X
- Xstatic XtTextPosition ApAsGetLastPos(src)
- X XtTextSource src;
- X{
- X ApAsSourceData *data;
- X data = (ApAsSourceData *)src->data;
- X return (XtTextPosition)(*data->strSrc->GetLastPos)(data->strSrc);
- X}
- X
- Xstatic ApAsSetLastPos(src, lastPos)
- X XtTextSource src;
- X XtTextPosition lastPos;
- X{
- X}
- X
- Xstatic int ApAsRead(src, pos, text, maxRead)
- X XtTextSource src;
- X int pos;
- X XtTextBlock *text;
- X int maxRead;
- X{
- X ApAsSourceData *data;
- X data = (ApAsSourceData *)src->data;
- X return ((*data->strSrc->Read)(data->strSrc, pos, text, maxRead));
- X}
- X
- X
- Xstatic Arg stringargs[] = {
- X {XtNstring, (XtArgVal) NULL},
- X {XtNlength, (XtArgVal) NULL},
- X {XtNeditType, (XtArgVal) XttextEdit},
- X };
- X
- Xstatic int ApAsReplace(src, startPos, endPos, text)
- X XtTextSource src;
- X XtTextPosition startPos, endPos;
- X XtTextBlock *text;
- X{
- X ApAsSourceData *data;
- X int i;
- X
- X if (!allowedit) return 0;
- X data = (ApAsSourceData *)src->data;
- X
- X if((data->pos + text->length) >= data->size){
- X while((data->pos + text->length) >= data->size){
- X data->size += chunk;
- X data->buf = XtRealloc(data->buf, data->size); /* optimize this!!! */
- X }
- X XtStringSourceDestroy(data->strSrc);
- X stringargs[0].value = (XtArgVal)data->buf ;
- X stringargs[1].value = (XtArgVal)data->size ;
- X data->strSrc = (XtTextSource)
- X XtStringSourceCreate(toplevel,stringargs,XtNumber(stringargs));
- X }
- X i = (*data->strSrc->Replace)(data->strSrc, startPos, endPos, text);
- X data->pos += text->length;
- X return (i);
- X}
- X
- Xstatic XtTextPosition ApAsScan (src, pos, sType, dir, count, include)
- X XtTextSource src;
- X XtTextPosition pos;
- X XtTextScanType sType;
- X XtTextScanDirection dir;
- X int count, include;
- X{
- X ApAsSourceData *data;
- X data = (ApAsSourceData *)src->data;
- X return
- X ((*data->strSrc->Scan)(data->strSrc, pos, sType, dir, count, include));
- X}
- X
- X
- X/* Public routines */
- X
- XXtTextSource TCreateApAsSource ()
- X{
- X XtTextSource src;
- X ApAsSourceData *data;
- X src = (XtTextSource) XtMalloc(sizeof(XtTextSourceRec));
- X src->Read = ApAsRead;
- X src->Replace = ApAsReplace;
- X src->GetLastPos = ApAsGetLastPos;
- X src->SetLastPos = ApAsSetLastPos;
- X src->Scan = ApAsScan;
- X src->edit_mode = XttextEdit;
- X data = (ApAsSourceData *)(XtMalloc(sizeof(ApAsSourceData)));
- X data->buf = XtCalloc(chunk,1);
- X data->pos = 0;
- X data->size = chunk;
- X stringargs[0].value = (XtArgVal)data->buf ;
- X stringargs[1].value = (XtArgVal)data->size ;
- X data->strSrc = (XtTextSource) XtStringSourceCreate (toplevel,stringargs,
- X XtNumber(stringargs));
- X src->data = (caddr_t)data;
- X return src;
- X}
- X
- XTDestroyApAsSource(src)
- X XtTextSource src;
- X{
- X ApAsSourceData *data;
- X data = (ApAsSourceData *)src->data;
- X XtStringSourceDestroy(data->strSrc);
- X XtFree(data->buf);
- X XtFree(data);
- X XtFree(src);
- X}
- END_OF_FILE
- if test 3558 -ne `wc -c <'ap.c'`; then
- echo shar: \"'ap.c'\" unpacked with wrong size!
- fi
- # end of 'ap.c'
- fi
- if test -f 'list.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'list.c'\"
- else
- echo shar: Extracting \"'list.c'\" \(5872 characters\)
- sed "s/^X//" >'list.c' <<'END_OF_FILE'
- X/* Systems Sciences Laboratory, Webster Research Center */
- X
- Xstatic char *PROGRAM_information[] =
- X{
- X "Copyright (c) 1988 Xerox Corporation. All rights reserved.",
- X "$Header$",
- X "$Locker$"
- X}
- X;
- X
- X/*
- X * Copyright protection claimed includes all forms and matters of copyrightable
- X * material and information now allowed by statutory or judicial lay or
- X * herinafter granted, including without limitation, material generated from
- X * the software programs which are displayed on the screen such as icons,
- X * screen display looks, etc.
- X */
- X
- X#include <ctype.h>
- X#include <pwd.h>
- X#include <grp.h>
- X
- X#include <sys/file.h>
- X
- X#include "xfilebrowser.h"
- X
- Xextern char *getenv();
- Xextern struct passwd *getpwuid();
- Xextern struct passwd *getpwnam();
- Xextern struct group *getgrgid();
- Xextern struct tm *localtime();
- X
- X#define HALFYEAR 15000000L
- X
- Xstatic char *months[] = {
- X "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct",
- X "Nov", "Dec", (char *)NULL };
- X
- Xstatic struct _pwcache {
- X u_short id; /* owner or group id */
- X char name[32];
- X} ownercache;
- X
- Xreset_ownercache()
- X{
- X ownercache.name[0] = '\0';
- X}
- X
- X/* ARGSUSED */
- Xint format_file(i, s, curtime)
- Xint i;
- Xchar *s;
- Xlong curtime;
- X{
- X char tmp[64];
- X struct passwd *passname;
- X struct group *groupname;
- X struct tm *actime;
- X struct afile *fp = files[i];
- X
- X switch (currentid) {
- X case 2:
- X if (ownercache.name[0] == '\0' || fp->d_gid != ownercache.id) {
- X if ( (groupname = getgrgid(fp->d_gid)) == NULL) {
- X disp_message("\nList: Group of %s not registered",
- X fp->d_name);
- X return(-1);
- X }
- X strcpy(ownercache.name, groupname->gr_name);
- X ownercache.id = fp->d_gid;
- X }
- X break;
- X
- X default:
- X if (ownercache.name[0] == '\0' || fp->d_uid != ownercache.id) {
- X if ( (passname = getpwuid(fp->d_uid)) == NULL) {
- X disp_message("\nList: Owner of %s not registered",
- X fp->d_name);
- X return(-1);
- X }
- X strcpy(ownercache.name, passname->pw_name);
- X ownercache.id = fp->d_uid;
- X }
- X break;
- X }
- X
- X sprintf(s, "%c%s %2d %-8s %8d",
- X fp->d_type, fp->d_access, fp->d_nlink, ownercache.name,
- X fp->d_size);
- X actime = localtime(&(fp->d_ctime));
- X if ( (curtime - fp->d_ctime) > HALFYEAR)
- X sprintf(tmp, " %-3s %-2d %5d %s\n",
- X months[actime->tm_mon], actime->tm_mday,
- X 1900+actime->tm_year, fp->d_name);
- X else sprintf(tmp, " %-3s %-2d %02d:%02d %s\n",
- X months[actime->tm_mon], actime->tm_mday,
- X actime->tm_hour, actime->tm_min,
- X fp->d_name);
- X strcat(s, tmp);
- X return 0;
- X}
- X
- X#define BUFSIZE 64 /* assume this as normal length of a file format */
- X
- Xint display_files(position)
- Xint position;
- X{
- X int i, length, buflength, curlength = 0;
- X long curtime;
- X XtTextBlock text;
- X XtTextPosition start, end, oldend;
- X char *buf;
- X char tmpbuf[2*MAXNAME];
- X
- X if (numfiles == 0) {
- X disp_message("\nList: no files found");
- X clear_widget(listwidget, listsource);
- X return(-1);
- X }
- X
- X curtime = time(0);
- X oldend =
- X (*listsource->Scan)(listsource, 0, XtstAll, XtsdRight, 1, 0);
- X XtTextUnsetSelection(listwidget);
- X
- X start = 0;
- X buflength = BUFSIZE * numfiles;
- X buf = XtMalloc(buflength);
- X *buf = '\0';
- X
- X for (i = 0; i < numfiles; i++) {
- X format_file(i, tmpbuf, curtime);
- X curlength += length = strlen(tmpbuf);
- X if ( (curlength) >= buflength) {
- X buflength += 1096;
- X buf = XtRealloc(buf, buflength);
- X }
- X
- X strcat(buf, tmpbuf);
- X files[i]->d_pos1 = start;
- X start = end = start + length;
- X files[i]->d_pos2 = end;
- X }
- X
- X allowedit = 1;
- X XtTextDisableRedisplay(listwidget);
- X
- X text.length = curlength;
- X text.ptr = buf;
- X text.firstPos = 0;
- X XtTextReplace(listwidget, 0, oldend, &text);
- X allowedit = 0;
- X
- X XtFree(buf);
- X XtTextSetInsertionPoint(listwidget, position);
- X XtTextEnableRedisplay(listwidget);
- X return(0);
- X}
- X
- X
- X/* ARGSUSED */
- Xchar *get_userdir(user)
- Xchar *user;
- X{
- X struct passwd *object;
- X
- X if ( (object = getpwnam(user)) == NULL) {
- X disp_message("\n: user name not found");
- X return(NULL);
- X }
- X else
- X return(object->pw_dir);
- X}
- X
- X/* ARGSUSED */
- Xint separate_dirpat(s, dir, pattern)
- Xchar *s, *dir, *pattern;
- X{
- X /* if no pattern is found a "*" pattern is returned */
- X int cc;
- X char *p;
- X struct stat statbuf;
- X
- X cc = stat(s, &statbuf);
- X if (cc != -1 && ( (statbuf.st_mode & S_IFMT) == S_IFDIR) )
- X strcpy(pattern, "*");
- X else {
- X p = rindex(s, '/');
- X strcpy(pattern, p+1);
- X /* check if we are at the root directory */
- X if (p != s) *p = '\0'; else *(p+1) = '\0';
- X }
- X if (access(s, X_OK)) { *pattern = '\0'; return(-1); }
- X else { strcpy(dir, s); return(0); }
- X}
- X
- X
- X/* ARGSUSED */
- Xint get_dirpat(s, dir, pattern)
- Xchar *s, *dir, *pattern;
- X{
- X char *cwd, *p;
- X char directory[255];
- X
- X if (s == NULL || !(*s) ) {
- X if ( (cwd = getcwd((char *)NULL, 255)) == (char *)NULL) {
- X disp_message("\ncannot get working directory");
- X return(-1);
- X }
- X else { strcpy(dir, cwd); strcpy(pattern, "*"); return(0); }
- X }
- X
- X if (s[0] == '~') {
- X /* expand tilde with the user directory as defined in password
- X file */
- X if ( (p = expand_tilde(s)) == (char *) NULL) return(-1);
- X strcpy(directory, p);
- X XtFree(p);
- X }
- X else if (s[0] == '/') {
- X /* full pathname specified */
- X strcpy(directory, s);
- X }
- X else {
- X /* use the current directory setting */
- X if (strlen(curdirectory) == 1)
- X sprintf(directory, "/%s", s);
- X else sprintf(directory, "%s/%s", curdirectory, s);
- X }
- X return(separate_dirpat(directory, dir, pattern));
- X}
- X
- X
- X/* ARGSUSED */
- Xint select_file(start, end)
- Xint start, end;
- X{
- X int i = 0;
- X
- X while (i < numfiles && files[i]->d_pos1 <= start) i++;
- X if ( (files[i-1]->d_pos2 + 1) < end) return(-1);
- X else return(i-1);
- X}
- X
- X/* ARGSUSED */
- Xint select_files(start, end, fstart, fend)
- Xint start, end;
- Xint *fstart, *fend;
- X{
- X int i = 0;
- X
- X while (i < numfiles && files[i]->d_pos1 < start) i++;
- X if (i == numfiles) return(-1); else *fstart = i;
- X
- X while ( (i < numfiles - 1) && (files[i]->d_pos2 + 1 < end) ) i++;
- X
- X *fend = i;
- X return(0);
- X}
- END_OF_FILE
- if test 5872 -ne `wc -c <'list.c'`; then
- echo shar: \"'list.c'\" unpacked with wrong size!
- fi
- # end of 'list.c'
- fi
- if test -f 'option.h' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'option.h'\"
- else
- echo shar: Extracting \"'option.h'\" \(1919 characters\)
- sed "s/^X//" >'option.h' <<'END_OF_FILE'
- X/*
- X * Systems Sciences Laboratory, Webster Research Center
- X *
- X * Copyright (c) 1988 Xerox Corporation. All rights reserved.
- X *
- X * Copyright protection claimed includes all forms and matters of copyrightable
- X * material and information now allowed by statutory or judicial lay or
- X * herinafter granted, including without limitation, material generated from
- X * the software programs which are displayed on the screen such as icons,
- X * screen display looks, etc.
- X */
- X
- X
- X#ifndef _option_h
- X#define _option_h
- X
- X/***********************************************************************
- X *
- X * Option Widget (subclassed of Forms widget)
- X *
- X ***********************************************************************/
- X
- X/* Parameters:
- X
- X Name Class RepType Default Value
- X ---- ----- ------- -------------
- X background Background pixel White
- X border BorderColor pixel Black
- X borderWidth BorderWidth int 1
- X destroyCallback Callback Pointer NULL
- X height Height int 0
- X label Label String NULL
- X mappedWhenManaged MappedWhenManaged Boolean True
- X maximumLength Max int 256
- X sensitive Sensitive Boolean True
- X orientation orientation orientation XtorientVertical
- X width Width int 0
- X x Position int 0
- X y Position int 0
- X
- X*/
- X
- X
- X#include <X11/Form.h>
- X
- X
- X#define XtNorientation "orientation"
- X
- Xtypedef struct _OptionClassRec *OptionWidgetClass;
- Xtypedef struct _OptionRec *OptionWidget;
- X
- Xextern WidgetClass optionWidgetClass;
- X
- Xextern void XtOptionAddOption(); /* parent, name, set */
- X /* Wiget parent; */
- X /* char *name; */
- X /* Boolean set; */
- X /* of all possible options only one may be selected
- X at a time */
- X
- Xextern int XtOptionGetSelection(); /* widget */
- X /* Widget w; */
- X /* returns the index of the currently selected
- X option; numbered from 1 and in the sequence
- X of creation */
- X
- X#endif _option_h
- X/* DON'T ADD STUFF AFTER THIS #endif */
- END_OF_FILE
- if test 1919 -ne `wc -c <'option.h'`; then
- echo shar: \"'option.h'\" unpacked with wrong size!
- fi
- # end of 'option.h'
- fi
- if test -f 'optionP.h' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'optionP.h'\"
- else
- echo shar: Extracting \"'optionP.h'\" \(1635 characters\)
- sed "s/^X//" >'optionP.h' <<'END_OF_FILE'
- X/*
- X * Systems Sciences Laboratory, Webster Research Center
- X *
- X * Copyright (c) 1988 Xerox Corporation. All rights reserved.
- X *
- X * Copyright protection claimed includes all forms and matters of copyrightable
- X * material and information now allowed by statutory or judicial lay or
- X * herinafter granted, including without limitation, material generated from
- X * the software programs which are displayed on the screen such as icons,
- X * screen display looks, etc.
- X */
- X
- X
- X/* Private definitions for option widget */
- X
- X#ifndef _optiongP_h
- X#define _optionP_h
- X
- X#include "option.h"
- X#include "toggle.h"
- X#include <X11/FormP.h>
- X
- Xtypedef struct {int empty;} OptionClassPart;
- X
- Xtypedef struct _OptionClassRec {
- X CoreClassPart core_class;
- X CompositeClassPart composite_class;
- X ConstraintClassPart constraint_class;
- X FormClassPart form_class;
- X OptionClassPart option_class;
- X} OptionClassRec;
- X
- Xextern OptionClassRec optionClassRec;
- X
- Xtypedef struct _OptionPart {
- X /* resources */
- X String label; /* title of option */
- X XtOrientation orientation; /* orientation of options */
- X /* private data */
- X Widget labelW; /* widget to display description*/
- X int select; /* index of currently selected
- X toggle widget */
- X} OptionPart;
- X
- Xtypedef struct _OptionRec {
- X CorePart core;
- X CompositePart composite;
- X ConstraintPart constraint;
- X FormPart form;
- X OptionPart option;
- X} OptionRec;
- X
- Xtypedef struct {int empty;} OptionConstraintsPart;
- X
- Xtypedef struct _OptionConstraintsRec {
- X FormConstraintsPart form;
- X OptionConstraintsPart option;
- X} OptionConstraintsRec, *OptionConstraints;
- X
- X#endif _optionP_h
- END_OF_FILE
- if test 1635 -ne `wc -c <'optionP.h'`; then
- echo shar: \"'optionP.h'\" unpacked with wrong size!
- fi
- # end of 'optionP.h'
- fi
- if test -f 'toggle.h' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'toggle.h'\"
- else
- echo shar: Extracting \"'toggle.h'\" \(2032 characters\)
- sed "s/^X//" >'toggle.h' <<'END_OF_FILE'
- X/*
- X * Systems Sciences Laboratory, Webster Research Center
- X *
- X * Copyright (c) 1988 Xerox Corporation. All rights reserved.
- X *
- X * Copyright protection claimed includes all forms and matters of copyrightable
- X * material and information now allowed by statutory or judicial lay or
- X * herinafter granted, including without limitation, material generated from
- X * the software programs which are displayed on the screen such as icons,
- X * screen display looks, etc.
- X */
- X
- X#ifndef _XtToggle_h
- X#define _XtToggle_h
- X
- X/***********************************************************************
- X *
- X * Toggle Widget (subclassed from the Command widget); callback is
- X * ignored
- X *
- X ***********************************************************************/
- X
- X#include <X11/CommandP.h>
- X
- X/* Resources:
- X
- X Name Class RepType Default Value
- X ---- ----- ------- -------------
- X background Background pixel White
- X border BorderColor pixel Black
- X borderWidth BorderWidth int 0
- X cursor Cursor Cursor hand2
- X destroyCallback Callback Pointer NULL
- X font Font FontStruct fixed
- X foreground Foreground pixel Black
- X height Height int text height
- X highlightThickness Thickness int 2
- X insensitiveBorder Insensitive Pixmap Gray
- X internalHeight Height int 2
- X internalWidth Width int 4
- X justify Justify Justify Center
- X label Label String NULL
- X state State State ToggleOn
- X mappedWhenManaged MappedWhenManaged Boolean True
- X sensitive Sensitive Boolean True
- X width Width int text width
- X x Position int 0
- X y Position int 0
- X
- X*/
- X
- X#ifndef _XtState_e
- X#define _XtState_e
- X
- Xtypedef enum {
- X XtToggleOff = 0, /* toggle button is off & unset */
- X XtToggleOn /* toggle button is on & set */
- X} XtState;
- X#endif _XtState_e
- X
- X#define XtNstate "state"
- X
- Xextern WidgetClass toggleWidgetClass;
- X
- Xtypedef struct _ToggleClassRec *ToggleWidgetClass;
- Xtypedef struct _ToggleRec *ToggleWidget;
- X
- X#endif _XtToggle_h
- X/* DON'T ADD STUFF AFTER THIS */
- END_OF_FILE
- if test 2032 -ne `wc -c <'toggle.h'`; then
- echo shar: \"'toggle.h'\" unpacked with wrong size!
- fi
- # end of 'toggle.h'
- fi
- if test -f 'toggleP.h' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'toggleP.h'\"
- else
- echo shar: Extracting \"'toggleP.h'\" \(1868 characters\)
- sed "s/^X//" >'toggleP.h' <<'END_OF_FILE'
- X/*
- X * Systems Sciences Laboratory, Webster Research Center
- X *
- X * Copyright (c) 1988 Xerox Corporation. All rights reserved.
- X *
- X * Copyright protection claimed includes all forms and matters of copyrightable
- X * material and information now allowed by statutory or judicial lay or
- X * herinafter granted, including without limitation, material generated from
- X * the software programs which are displayed on the screen such as icons,
- X * screen display looks, etc.
- X */
- X
- X/*
- X * ToggleP.h - Private definitions for Toggle widget
- X *
- X */
- X
- X#ifndef _XtToggleP_h
- X#define _XtToggleP_h
- X
- X#include "toggle.h"
- X#include <X11/CommandP.h>
- X
- X/***********************************************************************
- X *
- X * Toggle Widget Private Data
- X *
- X ***********************************************************************/
- X
- X/************************************
- X *
- X * Class structure
- X *
- X ***********************************/
- X
- X
- X /* New fields for the Command widget class record */
- Xtypedef struct _ToggleClass
- X {
- X int makes_compiler_happy; /* not used */
- X } ToggleClassPart;
- X
- X /* Full class record declaration */
- Xtypedef struct _ToggleClassRec {
- X CoreClassPart core_class;
- X SimpleClassPart simple_class;
- X LabelClassPart label_class;
- X CommandClassPart command_class;
- X ToggleClassPart toggle_class;
- X} ToggleClassRec;
- X
- Xextern ToggleClassRec toggleClassRec;
- X
- X/***************************************
- X *
- X * Instance (widget) structure
- X *
- X **************************************/
- X
- X /* New fields for the Command widget record */
- Xtypedef struct {
- X /* resources */
- X XtState state;
- X} TogglePart;
- X
- X
- X /* Full widget declaration */
- Xtypedef struct _ToggleRec {
- X CorePart core;
- X SimplePart simple;
- X LabelPart label;
- X CommandPart command;
- X TogglePart toggle;
- X} ToggleRec;
- X
- X#define XtCState "State"
- X#define XtRState "State"
- X
- X#endif _XtToggleP_h
- X
- X
- END_OF_FILE
- if test 1868 -ne `wc -c <'toggleP.h'`; then
- echo shar: \"'toggleP.h'\" unpacked with wrong size!
- fi
- # end of 'toggleP.h'
- fi
- if test -f 'xbrowser.icon' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'xbrowser.icon'\"
- else
- echo shar: Extracting \"'xbrowser.icon'\" \(2276 characters\)
- sed "s/^X//" >'xbrowser.icon' <<'END_OF_FILE'
- X#define xbrowser_width 50
- X#define xbrowser_height 50
- Xstatic char xbrowser_bits[] = {
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0xc0,
- X 0xff, 0x03, 0x00, 0x0c, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0xec, 0x00,
- X 0x00, 0x18, 0x0c, 0x04, 0x00, 0x37, 0x00, 0x00, 0xc6, 0x83, 0x87, 0xff,
- X 0x19, 0x07, 0x00, 0x20, 0x78, 0xfc, 0x60, 0xff, 0x01, 0x00, 0x18, 0xcf,
- X 0x03, 0x90, 0xd9, 0x79, 0x00, 0x8c, 0x31, 0xf8, 0xff, 0x0f, 0x0f, 0x00,
- X 0x66, 0x0c, 0xfe, 0xff, 0xdf, 0x07, 0x00, 0x32, 0xc7, 0xff, 0xff, 0x7f,
- X 0x18, 0x00, 0xd9, 0xf1, 0xff, 0xff, 0xff, 0x10, 0x00, 0x64, 0xf8, 0x7f,
- X 0xbf, 0xf6, 0x60, 0x00, 0x10, 0xfe, 0xd7, 0x55, 0xc5, 0x41, 0x00, 0x08,
- X 0x7f, 0xb6, 0xaf, 0xaa, 0x03, 0x00, 0x84, 0x87, 0xea, 0x5f, 0x3d, 0x0f,
- X 0x00, 0xc2, 0x29, 0xbe, 0xbf, 0xca, 0x1f, 0x00, 0xe2, 0xa2, 0xd6, 0x7f,
- X 0x2d, 0x3e, 0x00, 0x7f, 0x08, 0xba, 0xbf, 0xda, 0x7d, 0x00, 0x3f, 0x81,
- X 0x5a, 0x1f, 0x0d, 0xe2, 0x03, 0x3f, 0x2c, 0xbe, 0x4e, 0xca, 0xb9, 0x03,
- X 0x9f, 0x82, 0x54, 0x65, 0x05, 0xe9, 0x00, 0x34, 0x2a, 0xac, 0xaa, 0x86,
- X 0x6c, 0x03, 0xb4, 0x40, 0x59, 0x55, 0x03, 0xae, 0x00, 0x5c, 0x2c, 0xb4,
- X 0xaa, 0x01, 0x53, 0x00, 0xf8, 0x51, 0x61, 0xd5, 0x80, 0x3d, 0x00, 0x50,
- X 0x0f, 0x94, 0x3f, 0x80, 0x68, 0x00, 0x60, 0x9d, 0x15, 0x00, 0x60, 0x8c,
- X 0x00, 0xc0, 0xf2, 0x01, 0x00, 0xbc, 0x87, 0x00, 0x00, 0xaf, 0xff, 0xff,
- X 0x03, 0x0e, 0x00, 0x00, 0x7c, 0x01, 0x00, 0xf0, 0x19, 0x00, 0x04, 0xc0,
- X 0x03, 0x00, 0xfc, 0x30, 0x00, 0x64, 0x00, 0x1e, 0x00, 0x97, 0x01, 0x00,
- X 0x2e, 0x00, 0xe0, 0xff, 0x11, 0x03, 0x00, 0x26, 0x02, 0x00, 0x00, 0x20,
- X 0x06, 0x00, 0x90, 0x02, 0x00, 0x00, 0x20, 0x04, 0x00, 0xf2, 0x0e, 0x02,
- X 0x00, 0x20, 0x00, 0x00, 0x12, 0x18, 0x34, 0x00, 0x00, 0x00, 0x00, 0x47,
- X 0x1b, 0xc0, 0xbe, 0x06, 0x40, 0x00, 0xc4, 0x73, 0x06, 0x00, 0x00, 0x7c,
- X 0x00, 0xb4, 0x43, 0xa8, 0xbe, 0xdb, 0x07, 0x00, 0x04, 0x01, 0x00, 0x00,
- X 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x0f, 0x00, 0x00, 0x00, 0x00,
- X 0xbf, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- X 0x00, 0x00};
- END_OF_FILE
- if test 2276 -ne `wc -c <'xbrowser.icon'`; then
- echo shar: \"'xbrowser.icon'\" unpacked with wrong size!
- fi
- # end of 'xbrowser.icon'
- fi
- if test -f 'xfilebrowser.h' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'xfilebrowser.h'\"
- else
- echo shar: Extracting \"'xfilebrowser.h'\" \(5581 characters\)
- sed "s/^X//" >'xfilebrowser.h' <<'END_OF_FILE'
- X/*
- X * Systems Sciences Laboratory, Webster Research Center
- X *
- X * Copyright (c) 1988 Xerox Corporation. All rights reserved.
- X *
- X * Copyright protection claimed includes all forms and matters of copyrightable
- X * material and information now allowed by statutory or judicial lay or
- X * herinafter granted, including without limitation, material generated from
- X * the software programs which are displayed on the screen such as icons,
- X * screen display looks, etc.
- X */
- X
- X
- X#include <stdio.h>
- X#include <sys/types.h>
- X#include <sys/dir.h>
- X#include <sys/stat.h>
- X
- X#include <X11/Xlib.h>
- X#include <X11/IntrinsicP.h>
- X
- X#include <X11/cursorfont.h>
- X#include <X11/Box.h>
- X#include <X11/Label.h>
- X#include <X11/StringDefs.h>
- X#include <X11/Command.h>
- X#include <X11/VPaned.h>
- X#include <X11/Viewport.h>
- X#include <X11/AsciiTextP.h>
- X#include <X11/Shell.h>
- X#include <X11/Dialog.h>
- X#include "toggle.h"
- X#include "option.h"
- X
- X
- X
- X
- X#define max(a,b) (((a) > (b)) ? (a) : (b))
- X#define min(a,b) (((a) < (b)) ? (a) : (b))
- X
- X#define Feep() XBell(curdisplay, 20)
- X
- X#define MakeArg(n, v){ args[numargs].name = n; \
- X args[numargs].value = v; \
- X numargs++; \
- X }
- X#define MAXNAME 255
- X
- X
- X/* data structures */
- Xtypedef struct _lineelement {
- X XtTextPosition pa; /* specifies start position of line */
- X XtTextPosition pe; /* specifies end position of line */
- X int linenumber; /* line number in text file */
- X struct _lineelement *next;
- X} LineElement;
- X
- Xtypedef struct _searchelement {
- X XtTextPosition pos1; /* specifies start position in widget */
- X XtTextPosition pos2; /* specifies end position in widget */
- X LineElement *lines; /* list of linenumbers */
- X char name[MAXNAME + 1]; /* file name */
- X} SearchElement;
- X
- Xstruct afile {
- X u_short d_marked; /* file marked for deletion */
- X char d_type; /* file type, e.g. 'd', 'c', 'f' */
- X u_short d_nl; /* number of links */
- X u_short d_uid; /* owner id */
- X u_short d_gid; /* group id */
- X u_short d_nlink; /* number of hard links */
- X char d_access[12]; /* access rights */
- X u_long d_size; /* file size */
- X u_long d_ctime; /* last modification time */
- X XtTextPosition d_pos1; /* start position of display */
- X XtTextPosition d_pos2; /* end position of display */
- X u_long d_ino; /* inode number of entry */
- X u_short d_reclen; /* length of this record */
- X u_short d_namlen; /* length of string in d_name */
- X char d_name[MAXNAME + 1]; /* name must be no longer than this */
- X};
- X
- Xtypedef struct _dialogdata {
- X Widget w; /* widget which requested dialog */
- X int start; /* index to first selected file in files[] */
- X int end; /* index to last selected file in files[] */
- X int current; /* index to currently handled file in files[] */
- X char *answer; /* dialog provided by user */
- X Boolean diag; /* save standard diagnostics */
- X Boolean out; /* save standard output */
- X int (*yes)(); /* yes function */
- X int (*no)(); /* no function */
- X int (*cancel)(); /* cancel function */
- X} DialogData;
- X
- X/*
- X * The DIRSIZ macro gives the minimum record length which will hold
- X * the directory entry. This requires the amount of space in struct direct
- X * without the d_name field, plus enough space for the name with a terminating
- X * null byte (dp->d_namlen+1), rounded up to a 4 byte boundary.
- X */
- X
- X#define MYDIRSIZ(dp, length) \
- X ((sizeof (struct afile) - (MAXNAME+1)) + \
- X (((dp)->d_namlen+1 + 3 + length) &~ 3))
- X
- X
- X/* misc externs */
- Xextern char *XtMalloc();
- Xextern char *XtRealloc();
- Xextern char *XtCalloc();
- Xextern char *index();
- Xextern char *rindex();
- Xextern char *getcwd();
- X
- X
- X/* externs in xfilebrowser.c */
- Xextern char *filepattern;
- Xextern char *searchpattern;
- Xextern char *curdirectory;
- Xextern char *oldpattern;
- Xextern char *cmdline;
- Xextern int viewEdit;
- X
- Xextern struct afile **files;
- Xextern int numfiles;
- Xextern SearchElement **hitfiles;
- Xextern int numhitfiles;
- Xextern int allowedit;
- X
- Xextern Widget toplevel;
- Xextern Widget outer;
- Xextern Widget messwidget;
- Xextern Widget listwidget;
- Xextern Widget dirwidget;
- Xextern Widget fpatwindow;
- Xextern Widget grepwidget;
- X
- XWidget quitbutton; /* command button for quit */
- XWidget listbutton; /* command button for list */
- XWidget editbutton; /* command button for edit file selected
- X in directory listing */
- XWidget parentdirbutton; /* command button for selecting
- X parent directory */
- XWidget shellbutton; /* command button for invoking shell */
- XWidget copybutton; /* command button for invoking copy */
- XWidget renamebutton; /* command button for invoking rename */
- XWidget deletebutton; /* command button for invoking delete on files */
- X
- XWidget grepbutton; /* command button for invoking grep on files */
- XWidget grepwindow; /* string box to specify the grep search pattern */
- XWidget grepeditbutton; /* command button for edit file selected
- X in list of searched files */
- X
- Xextern Display *curdisplay;
- Xextern XtTextSource messsource, listsource, grepsource;
- X
- X/* externals in util.c */
- Xextern Widget makeCommandButton();
- Xextern Widget makeBooleanButton();
- Xextern Widget makeStringBox();
- Xextern int select_file();
- Xextern char *expand_tilde();
- X
- X/* externs in commands.c */
- Xextern DoQuit();
- Xextern DoList();
- Xextern DoEdit();
- Xextern DoGrep();
- Xextern DoChangeDir();
- Xextern DoShell();
- Xextern DoParent();
- Xextern DoGrepEdit();
- Xextern DoCopy();
- Xextern DoRename();
- Xextern DoDelete();
- X
- X/* externs in ap.c */
- Xextern XtTextSource TCreateApAsSource();
- X
- X/* externs in popup.c */
- Xextern int create_confirm();
- Xextern int confirm_prompt();
- Xextern int check_confirm();
- Xextern int check_prompt();
- X
- X/* externs in scandir.c */
- Xextern int check_option();
- Xextern int currentid;
- X
- END_OF_FILE
- if test 5581 -ne `wc -c <'xfilebrowser.h'`; then
- echo shar: \"'xfilebrowser.h'\" unpacked with wrong size!
- fi
- # end of 'xfilebrowser.h'
- fi
- echo shar: End of archive 3 \(of 3\).
- cp /dev/null ark3isdone
- MISSING=""
- for I in 1 2 3 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 3 archives.
- rm -f ark[1-9]isdone
- else
- echo You still need to unpack the following archives:
- echo " " ${MISSING}
- fi
- ## End of shell archive.
- exit 0
- --
- Mike Wexler(wyse!mikew) Phone: (408)433-1000 x1330
- Moderator of comp.sources.x
-